【NestJS】跨域、全局异常处理、限速

您所在的位置:网站首页 西门子 职级head 【NestJS】跨域、全局异常处理、限速

【NestJS】跨域、全局异常处理、限速

2023-03-25 02:41| 来源: 网络整理| 查看: 265

跨域 const app = await NestFactory.create(AppModule) const origins = JSON.parse(process.env.LSC_CORS_ORIGIN) //["http://localhost:8080","http://localhost:8081"] app.enableCors({ "origin": origins, // "origin": "*", "credentials": true, // "allowedHeaders":['Authorization','content-type'], "methods": "GET,HEAD,PUT,PATCH,POST,DELETE", "preflightContinue": false, "optionsSuccessStatus": 204 })//https://github.com/expressjs/cors#configuration-options 全局异常处理

可以捕获全局异常并且进行日志等相关记录

//HttpException 类型 import { ExceptionFilter, Catch, ArgumentsHost, HttpException,HttpStatus } from '@nestjs/common'; import { Request, Response } from 'express'; @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); const request = ctx.getRequest(); const status = exception.getStatus(); // @TODO 记录日志 console.log('全局 HttpException 异常日志: %s %s error: %s', requesthod, request.url, exception.message); // 发送响应 response .status(status) .json({ statusCode: status, message: exception.message, timestamp: new Date().getTime(), path: request.url, }); } } //不分异常类型 import { ExceptionFilter, Catch, ArgumentsHost, HttpException, HttpStatus, } from '@nestjs/common' @Catch() export class AllExceptionsFilter implements ExceptionFilter { catch(exception: unknown, host: ArgumentsHost) { const ctx = host.switchToHttp() const response = ctx.getResponse() const request = ctx.getRequest() const status = exception instanceof HttpException ? exception.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR const exceptionStr = exception ? `message:${exception['message']},stack:${exception['stack']}` : '' console.log('全局异常日志: %s %s %s error: %s', requesthod, request.url, request.body, exceptionStr) response.status(status).json({ statusCode: status, timestamp: new Date().getTime(), message: exception['message'], method: requesthod, path: request.url, }) } } //设置为全局异常 app.useGlobalFilters(new HttpExceptionFilter(),new AllExceptionsFilter()) //https://docs.nestjs.cn/7/exceptionfilters 限速

保护node程序免受暴力攻击

$ npm i --save express-rate-limit app.use( rateLimit({ windowMs: 15 * 60 * 1000, // 15分钟 max: 1000, // 限制15分钟内最多只能访问1000次 }), )



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3